草庐IT

Android onClick 阻塞 onFling

全部标签

c# - 为什么从 NetworkStream 加载 XML 时服务器会阻塞?

我有一个简单的C#客户端和服务器。目标是客户端向服务器发送一个XML文档,然后服务器应以不同的XML文档响应。当我尝试使用XmlDocument.Load(NetworkStream)接收输入/请求XML时,服务器正在阻塞。服务器:TcpListenert=newTcpListener(IPAddress.Any,4444);t.Start();TcpClientc=t.AcceptTcpClient();NetworkStreams=c.GetStream();XmlDocumentreq=newXmlDocument();req.Load(s);stringrespString="

c++ - 我可以在不使用阻塞 I/O 的情况下在数据报套接字上调用 select

我可以在阻塞的套接字上在recv_from之前调用select吗? 最佳答案 是的。select()支持阻塞和非阻塞套接字。 关于c++-我可以在不使用阻塞I/O的情况下在数据报套接字上调用select,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3765587/

windows - SFML 窗口调整事件阻塞主线程

我刚开始使用SFML图书馆和它太棒了。但是,当通过用鼠标拖动角来调整窗口大小时,在释放鼠标之前我不会得到调整大小事件。这意味着在释放鼠标之前我无法更新我的图形(游戏循环在gui线程上)并且还会导致大量事件通过所有调整大小的位置。我怎样才能使调整大小不阻塞线程? 最佳答案 Windows导致此问题。如果您移动窗口或调整窗口大小,GetEvent()将变得阻塞。(讨厌这个操作系统的另一个有趣的小理由......)我已经用单独的事件轮询线程解决了这个问题。看看这个:(您感兴趣的部分完全在main.cpp中。)https://bitbuck

windows - Windows 中允许线程等待直到另一个线程解除阻塞的正确线程同步对象是什么?

我有一个在Windows下运行的Delphi应用程序需要阻塞,直到另一个线程已传送数据。换句话说,我需要等待来自特定线程的同步对象,我可以将其置于非信号状态,就好像另一个线程拥有该对象的所有权一样,这样当我调用WaitFor()线程阻塞,直到其他线程之一解除它的阻塞(有多个潜在的线程可以解除并且事先不知道是哪一个)。请注意,所有线程都可以访问共享数据区域,因此访问公共(public)同步对象不是问题。我认为Events是正确的选择,直到我读到RaymondChen这篇关于PulseEvent()问题的令人不安的博文:http://blogs.msdn.com/b/oldnewthing

c++ - 非阻塞套接字和 send()

基于我对非阻塞套接字的低估,当我要send()数据时,如果发送缓冲区已满,send()会返回错误.但我的问题如下:如果发送缓冲区有5个字节的空间,而我尝试发送15个字节,是不会发送整个15个字节,还是会发送5个字节,我有责任查看实际发送了多少数据,并重新发送剩余的字节。 最佳答案 send会告诉您成功发送了多少字节,处理任何未发送的内容完全是您的责任。但是有很多库可以在这方面帮助您。 关于c++-非阻塞套接字和send(),我们在StackOverflow上找到一个类似的问题:

windows - 如何在不阻塞 Windows 的情况下打开文件?

我看到CreateFile函数接受一个FILE_FLAG_OVERLAPPED参数来使文件io非阻塞。但是,如何使CreateFile调用自身成为非阻塞的? 最佳答案 不幸的是,CreateFile是同步的。如果您需要它是非阻塞的,您可能正在尝试在UI线程中执行I/O。避免这种情况。你没有提到编程语言,所以我假设它是C++。您可以使用thestandardlibrary'sthreadingfacilities将I/O密集型工作卸载到工作线程中。例如,您可以将其包装在packaged_task中或async.

c++ - 在 Windows 上阻塞套接字

我尝试在Windows上实现一个带有阻塞套接字的简单http服务器。基本上,我有一个简单的服务器,它只在退出前发生网络连接时将数据写入套接字。问题是如果我不延迟进程退出,最后一个socket.send没有效果。写入此套接字应该阻塞,直到写入所有数据。我试过使用write的完成条件,使用socket的non_blocking方法。我仍然遇到同样的问题。请注意,该问题不会发生在Linux上。代码如下:#includeintmain(intargc,char*argv[]){char*address="0.0.0.0";char*port="8180";boost::asio::io_ser

c - 非阻塞输入 C

我正在尝试创建一个程序,向用户提出问题并有几秒钟的时间回答问题,否则程序会停止输入。现在我的问题是我无法让我的程序不阻止输入。我能够输入数据,但当我不输入并且计时器用完时,它会一直要求输入。我在Windows上运行并使用Code::Blocks以防它很重要。如果有人可以向我解释我做错了什么,将不胜感激。#include#include#include#include#includeintkey=0;intGradeTotal=0;//runsanemptyloopeveryiterationF.E.forloopvoidtimer(intseconds){clock_twait=(cl

windows - 没有 ConnectEx 的 Windows 上的非阻塞套接字连接

我需要在单个进程中启动1000个客户端连接,我需要解决的关键限制是驱动程序不支持ConnectEx,因此我无法拥有纯IOCP解决方案。我的第一个想法是一个线程池来处理连接,其中每个句柄可以使用普通连接/选择语义处理多达64个连接,并且一旦连接就继续使用IOCP。但这行不通;一旦选择运行,我就不能向FD_SET添加另一个套接字。所以我必须将套接字设置为非阻塞并轮询它们。最好的解决方案可能是最简单的;每个线程一个连接客户端。假设我可以保持合理的连接速率,池中的线程数可能会很小。这是一个奇怪的情况,理想情况下,驱动程序会支持ConnectEx,但它(目前)不支持,我需要以尽可能最好的方式解决

c - 套接字阻塞 :( How do i get out?

这是我从microsoft中获取的服务器代码.下面是我的main,它需要运行voidimportant_code(bool);。在linux和windows上使用管道和套接字时,我总是遇到这个问题。我如何退出select()我什么时候想退出我的应用程序?假设important_code总是在套接字代码之后的同一个线程上执行。我该怎么做?我知道这是windows代码,但我在linux下也遇到了这个问题额外的测试代码:如果您在我的主函数中注释掉main2()并取消注释循环,您可以使用ctrl+c干净地退出。使用套接字代码,阻塞select阻止我这样做。我该如何解决这个问题?#pragmac